6 void ssd1331_scrollDisplay(screen_t* dev,
int h,
int v) {
8 int mask_cs = (1 << dev->dev_id);
9 int mask_sdi = (1 << dev->sdi_pin);
10 int mask_clk = (1 << dev->clk_pin);
11 int mask_dc = (1 << dev->dc_pin);
14 switch (dev->rotation) {
29 if(h > dev->width) h = dev->width;
30 if(v > dev->height/2) v = dev->height/2;
31 if(h < 0 - dev->width) h = 0 - dev->width;
32 if(v < dev->height/(-2)) v = dev->height/(-2);
34 if(h < 0) h = dev->width + h;
35 if(v < 0) v = dev->height + v;
37 ssd1331_writeLockSet(dev->dev_id);
39 if (v == 0 && h == 0) {
40 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_SCROLLSTOP, 0);
42 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_SCROLLSETUP, 0);
44 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, (
char) h, 0);
45 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0, 0);
46 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, dev->width << 1, 0);
47 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, (
char) v, 0);
48 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, 0, 0);
50 int _tMark = CNT + (CLKFREQ / 10000);
53 ssd1331_writeByte(mask_cs, mask_sdi, mask_clk, mask_dc, SSD1331_CMD_SCROLLSTART, 0);
56 ssd1331_writeLockClear(dev->dev_id);